彈珠射擊遊戲Demo-SmashSquash

彈珠射擊遊戲Demo-SmashSquash

前言

類似怪物彈珠的射擊遊戲製作,是學習類型的專案。
期間對C# OOP概念的進一步利用深入了解
著重於繼承的方面

嘗試使用event來開發遊戲

也實作了多個子系統,後續會一一介紹

DEMO

DEMO 影片

遊戲內容介紹

封面

  • File

載入介面

  • File1
  • LoadingSystem,處理載入進度條
    • 包括異步加載場景的程式
    • 負責處理遊戲中所有的場景載入
  • RadioSystem,處理遊戲中的提示資訊

故事、教學介面

  • 3File
  • 4File
  • StorySystem,故事主系統
    • Flower plugin
    • 用於載入Flower的設定
    • 依靠註冊各類事件,來處理遊戲中相關文本的撥放
    • 能夠靠著編寫故事腳本,來加快劇情對話的開發

大廳

  • File2
  • PlayerAccountSystem
    • 處理玩家資料
  • PlayerInfo
    • 負責玩家資料的UGUI部分

背包介面

  • 5File
  • PackageSystem,用於處理玩家背包資訊
    • 透過長按單位,可以進入單位資訊介面
    • 且能夠設置出戰隊伍
  • PackagePage,同上,但負責UGUI部分

單位介面

  • 9File
    • UnitInfoSystem,顯示單位資訊
  • 10File
    • 能夠進行單位的強化

召喚介面

  • 7File
  • SummonPool
    • 透過list還存有的單位,進行抽卡

音量設置介面

  • 8File

關卡介面

  • 11File
  • StageSystem,處理關卡的新增以及載入
    • 關卡資訊是一個靜態類別,方便製作以及添加到關卡列表中

戰鬥介面

  • 12File
  • 玩家的單位是綠框,敵人單位是紅框
  • 包括小地圖系統、戰鬥設置系統、單位系統等等數個系統,放置在BattleScene資料夾底下
  • 技能系統
    • 13File
  • 射擊UI輔助
    • 14File
  • 受傷效果
    • 15File
  • 設定
    • 16File

各類系統

LoadingSystem

處理載入進度條

  • 包括異步加載場景的程式
  • 負責處理遊戲中所有的場景載入
/// <summary>
    /// 異步加載場景
    /// </summary>
    /// <param name="sceneName">場景名稱</param>
    /// <returns></returns>
    IEnumerator LoadLevel(string sceneName)
    {
        AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName);  //預加載指定場景

        while(operation.isDone == false)
        {
            loadingBar.value = operation.progress;
            loadingText.text = "Loading......" + operation.progress * 100 + "%";

            yield return null;
        }

        LoadingCanvas.SetActive(false);
    }

RadioSystem

用於廣播提示資訊以及腳色資訊
以訊息類別來處理來源不同的訊息廣播
讓呼叫廣播系統的所有程式,只需要傳遞string參數即可

/// <summary>
/// 訊息類型
/// </summary>
public enum RadioType
{
    System,
    UnitSkill
}

StorySystem

故事主系統

  • Flower plugin
  • 用於載入Flower的設定
  • 依靠註冊各類事件,來處理遊戲中相關文本的撥放
  • 能夠靠著編寫故事腳本,來加快劇情對話的開發
[show]
[MusicSystem,Stop]
[audio,voidBgm,OpeningScene/openingVoid,true,0,audioTransit_1_1000]
[image,system,OpeningScene/systemEye,0,100,0,spFadeIn_1000]
機械式的聲音:甦醒了嗎? 契約者編號-R7549TY129。[w]
機械式的聲音:根據立維斯引渡條款、波特蘭帝國領土保衛守則、人型生命體援助基金會-第12條約定、......[w]
機械式的聲音:......、七顆星魔法議章之規範,湛金議程委員會下轄之褪色樂園已擁有契約者的完全解釋所有權。[w]
機械式的聲音:已發配智能助手R7型......[w]
機械式的聲音:......[w]
機械式的聲音:傳送完畢,後續引導將轉交由智能助手R7型進行[w]
[remove,system,spFadeOut_1000]
[remove,voidBgm,audioTransit_0_1000]
[MusicSystem,Start]
[hide]
[ReadedStory,openingIntro]
[LoadPage,MainScene]

PackageSystem && PackagePage

處理在背包介面所有的操作

  • 遊戲中的單位會被註冊在圖鑑中,這個專案的單位是由一個MonoBehavior來做紀錄
    • 故需要讓該物件一值存在於場景中
    • 後續開發中,物件被註冊在靜態的Dictionary中
    • 在遊戲開始後,將放在MonoBehavior的Prefabs載入
    • 更加方便
  • 6File

彈珠射擊遊戲Demo-SmashSquash
https://z-hwa.github.io/webHome/[object Object]/Game-develope/彈珠射擊遊戲Demo-SmashSquash/
作者
crown tako
發布於
2024年8月4日
許可協議